SCAN: A Heuristic for Near-Optimal Software Pipelining
نویسندگان
چکیده
Software pipelining is a classic compiler optimization that improves the performances of inner loops on instruction-level parallel processors. In the context of embedded computing, applications are compiled prior to manufacturing the system, so it is possible to invest large amounts of time for compiler optimizations. Traditionally, software pipelining is performed by heuristics such as iterative modulo scheduling. Optimal software pipelining can be formulated as integer linear programs, however these formulations can take exponential time to solve. As a result, the size of loops that can be optimally software pipelined is quite limited. In this article, we present the SCAN heuristic, which enables to benefit from the integer linear programming formulations of software pipelining even on loops of significant size. The principle of the SCAN heuristic is to iteratively constrain the software pipelining problem until the integer linear programming formulation is solvable in reasonable time. We applied the SCAN heuristic to a multimedia benchmark for the ST200 VLIW processor. We show that it almost always compute an optimal solution for loops that are intractable by classic integer linear programming approaches. This improves performances by up to 33.3% over the heuristic modulo scheduling of the production ST200 compiler.
منابع مشابه
Lifetime-Sensitive Modulo Scheduling in a Production Environment
ÐThis paper presents a novel software pipelining approach, which is called Swing Modulo Scheduling (SMS). It generates schedules that are near optimal in terms of initiation interval, register requirements, and stage count. Swing Modulo Scheduling is a heuristic approach that has a low computational cost. This paper first describes the technique and evaluates it for the Perfect Club benchmark s...
متن کاملHeuristic Algorithms for Scheduling Iterative Task Computations on Distributed Memory Machines
Many partitioned scientiic programs can be modeled as iterative execution of computational tasks, represented by iterative task graphs (ITGs). In this paper, we consider the symbolic scheduling of ITGs on distributed memory architectures with nonzero communication overhead without searching the entire iteration space. An ITG may or may not have dependence cycles and we propose heuristic algorit...
متن کاملInstruction Scheduling in the Presence of Structural Hazards: An Integer Programming Approach to Software Pipelining
Software pipelining is an eecient instruction scheduling method to exploit the multiple instructions issue capability of modern VLIW architectures. In this paper we develop a precise mathematical formulation based on ILP (Integer Linear Programming) for the software pipelining problem for architectures involving structural hazards. Compared to other heuris-tic methods as well as an ILP-based me...
متن کاملSwing module scheduling: a lifetime-sensitive approach
This paper presents a novel software pipelining approach, which is called Swing Modulo Scheduling (SMS). It generates schedules that are near optimal in terms of initiation interval, register requirements and stage count. Swing Modulo Scheduling is an heuristic approach that has a low computational cost. The paper describes the technique and evaluates it for the Perfect Club benchmark suite. SM...
متن کاملGlobal Software Pipelining with Iteration Preselection
Software pipelining loops containing multiple paths is a very diicult problem. Loop shifting ooers the possibility of a close to optimal schedule with acceptable code growth. Deciding how often to shift each operation is diicult, and existing heuristics are rather ad hoc. We separate loop shifting from scheduling, and present new, non-greedy heuris-tics. Experimental results show that our appro...
متن کامل